home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 December / PCWorld_2007-12_cd.bin / domacnost a kancelar / autoit / autoit-v3-setup.exe / Examples / Helpfile / TCPCloseSocket.au3 < prev    next >
Text File  |  2007-09-08  |  4KB  |  115 lines

  1. ;SERVER!! Start Me First !!!!!!!!!!!!!!!
  2. #include <GUIConstants.au3>
  3.  
  4. $g_IP = "127.0.0.1"
  5.  
  6. ; Start The TCP Services
  7. ;==============================================
  8. TCPStartUp()
  9.  
  10. ; Create a Listening "SOCKET"
  11. ;==============================================
  12. $MainSocket = TCPListen($g_IP, 65432,  100 )
  13. If $MainSocket = -1 Then Exit
  14. $RogueSocket = -1
  15.  
  16. ; Create a GUI for chatting
  17. ;==============================================
  18. $GOOEY = GUICreate("my server",300,200)
  19. $edit = GUICtrlCreateEdit("",10,40,280,150,$WS_DISABLED)
  20. $input = GUICtrlCreateInput("",10,10,200,20)
  21. $butt = GUICtrlCreateButton("Send",210,10,80,20,$BS_DEFPUSHBUTTON)
  22. GUISetState()
  23.  
  24. ; Initialize a variable to represent a connection
  25. ;==============================================
  26. Dim $ConnectedSocket = -1
  27.  
  28. ; GUI Message Loop
  29. ;==============================================
  30. While 1
  31.    $msg = GUIGetMsg()
  32.  
  33.    ; GUI Closed
  34.    ;--------------------
  35.    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
  36.  
  37.    ; User Pressed SEND
  38.    ;--------------------
  39.    If $msg = $butt Then
  40.       If $ConnectedSocket > -1 Then
  41.          $ret = TCPSend( $ConnectedSocket, GUICtrlRead($input))
  42.          If @ERROR Or $ret < 0 Then
  43.             ; ERROR OCCURRED, CLOSE SOCKET AND RESET ConnectedSocket to -1
  44.             ;----------------------------------------------------------------
  45.             TCPCloseSocket( $ConnectedSocket )
  46.             WinSetTitle($GOOEY,"","my server - Client Disconnected")
  47.             $ConnectedSocket = -1
  48.          ElseIf $ret > 0 Then
  49.             ; UPDATE EDIT CONTROL WITH DATA WE SENT
  50.             ;----------------------------------------------------------------
  51.             GUICtrlSetData($edit, GUICtrlRead($edit) & GUICtrlRead($input) & @CRLF )
  52.          EndIf
  53.       EndIf
  54.       GUICtrlSetData($input,"")
  55.    EndIf
  56.  
  57.    If $RogueSocket > 0 Then
  58.       $recv = TCPRecv( $RogueSocket, 512 )
  59.       If NOT @error Then
  60.          TCPCloseSocket( $RogueSocket )
  61.          $RogueSocket = -1
  62.       EndIf
  63.    EndIf
  64.  
  65.    ; If no connection look for one
  66.    ;--------------------
  67.    If $ConnectedSocket = -1 Then
  68.       $ConnectedSocket = TCPAccept( $MainSocket)
  69.       If $ConnectedSocket < 0 Then
  70.          $ConnectedSocket = -1
  71.       Else
  72.          WinSetTitle($GOOEY,"","my server - Client Connected")
  73.       EndIf
  74.  
  75.    ; If connected try to read some data
  76.    ;--------------------
  77.    Else
  78.       ; EXECUTE AN UNCONDITIONAL ACCEPT IN CASE ANOTHER CLIENT TRIES TO CONNECT
  79.       ;----------------------------------------------------------------
  80.       $RogueSocket = TCPAccept( $MainSocket)
  81.       If $RogueSocket > 0 Then 
  82.           TCPSend( $RogueSocket, "~~rejected" )
  83.       EndIf
  84.  
  85.       $recv = TCPRecv( $ConnectedSocket, 512 )
  86.  
  87.       If $recv <> "" And $recv <> "~~bye" Then
  88.          ; UPDATE EDIT CONTROL WITH DATA WE RECEIVED
  89.          ;----------------------------------------------------------------
  90.          GUICtrlSetData($edit, GUICtrlRead($edit) & ">" & $recv & @CRLF)
  91.  
  92.       ElseIf @error Or $recv = "~~bye" Then
  93.          ; ERROR OCCURRED, CLOSE SOCKET AND RESET ConnectedSocket to -1
  94.          ;----------------------------------------------------------------
  95.          WinSetTitle($GOOEY,"","my server - Client Disconnected")
  96.          TCPCloseSocket( $ConnectedSocket )
  97.          $ConnectedSocket = -1
  98.       EndIf
  99.    EndIf
  100. WEnd
  101.  
  102. GUIDelete($GOOEY)
  103.  
  104. Func OnAutoItExit()
  105.    ;ON SCRIPT EXIT close opened sockets and shutdown TCP service
  106.    ;----------------------------------------------------------------------
  107.    If $ConnectedSocket > -1 Then 
  108.       TCPSend( $ConnectedSocket, "~~bye" )
  109.       Sleep(2000)
  110.       TCPRecv( $ConnectedSocket,  512 )
  111.       TCPCloseSocket( $ConnectedSocket )
  112.    EndIf
  113.    TCPCloseSocket( $MainSocket )
  114.    TCPShutDown()
  115. EndFunc